const { body } = require('express-validator')
const validate = require('../middleware/validator')
const Admin = require('../models/index/Admin')
const md5 = require('../util/md5')

exports.login = [
  validate([
    body('username').notEmpty().withMessage('管理名字不能为空'),
    body('password').notEmpty().withMessage('密码不能为空')
  ]),
  validate([
    body('username').custom(async (username, { req }) => {
      const admin = await Admin.findOne({
        where: {
          username
        }
      })
      if (!admin) {
        return Promise.reject('loginError')
      }
      req.admin = admin
    })
  ]),
  validate([
    body('password').custom(async (password, { req }) => {
      if (md5(password) !== req.admin.password) {
        return Promise.reject('loginError')
      }
    })
  ])
]

exports.addAdmin = validate([
  body('username')
    .notEmpty()
    .withMessage('管理员名字不能为空')
    .custom(async (username) => {
      const admin = await Admin.findOne({
        where: {
          username
        }
      })
      if (admin) {
        return Promise.reject('管理员已存在')
      }
    }),
  body('password').notEmpty().withMessage('密码不能为空')
])

// exports.registrer = validate([
//   body('user.username')
//     .notEmpty()
//     .withMessage('用户名不能为空')
//     .custom(async (username) => {
//       const user = await User.findOne({
//         where: {
//           username,
//           password
//         }
//       })
//       if (user) {
//         return Promise.reject('用户名已经存在')
//       }
//     }),
//   body('user.password').notEmpty().withMessage('密码不能为空'),
//   body('user.email')
//     .notEmpty()
//     .withMessage('邮箱不能为空')
//     .isEmail()
//     .withMessage('邮箱格式不正确')
//     .bail()
//     .custom(async (email) => {
//       const user = await User.findOne({ email })
//       if (user) {
//         return Promise.reject('邮箱已存在')
//       }
//     })
// ])
